5.03. Работа с БД
Работа с БД
В Java работа с БД строится на основе следующих основных концепций:
- JDBC (Java Database Connectivity) – низкоуровневый API, позволяющий подключаться к любым СУБД через JDBC-драйверы;
- ORM (Object Relational Mapping) – фреймворки, которые связывают объекты Java с таблицами в БД;
- SQL Frameworks – обёртки над JDBC, упрощающие работу с SQL без полной абстракции ORM;
- Spring Data / Spring Boot – популярный экосистемный подход к работе с БД в enterprise-приложениях.
JDBC позволяет выполнять SQL-запросы, управлять соединением, извлекать и изменять данные. JDBC включает в себя следующие компоненты:
- DriverManager — управляет драйверами и соединениями.
- Connection — устанавливает соединение с БД.
- Statement / PreparedStatement — выполняют SQL-запросы.
- ResultSet — содержит результаты выборки.
Процесс работы с БД можно описать универсальным алгоритмом:
- Создать или выбрать БД, определить СУБД, таблицы, поля, связи и ограничения.
- Добавить JDBC-драйвера (для каждой СУБД соответствующий):
- MySQL - mysql-connector-java;
- PostgreSQL - postgresql;
- SQLite - sqlite-jdbc;
- Oracle - ojdbc.
В Maven/Gradle это делается через зависимость.
-
Настроить параметры подключения – указать адрес сервера, имя базы данных, логин, пароль и другие параметры, если требуется. Эти параметры обычно хранятся в конфигурационном файле (application.properties или application.yml), особенно если используется Spring.
-
Установка подключения к базе данных – нужно открыть соединение с БД, проверить состояние перед началом работы – с помощью DriverManager.getConnection(url, user, password) или пула соединений (например, HikariCP).
-
Формирование и выполнение запросов – использовать:
- Statement или PreparedStatement для выполнения SQL-запросов;
- ResultSet для чтения результатов SELECT;
- Методы executeUpdate() для INSERT, UPDATE, DELETE.
-
Обработка результатов – извлечение данных, преобразование их в нужные объекты Java, обработка возможных исключений.
-
Закрыть ресурсы - ResultSet, Statement, Connection.
Hibernate - один из самых популярных ORM-фреймворков для Java. Он предоставляет мощный набор инструментов для работы с реляционными базами данных.
Hibernate поддерживает JPA (Java Persistence API), автоматическую генерацию SQL-запросов, ленивую загрузку (lazy loading) и кэширование, а также поддержку сложных запросов через HQL (Hibernate Query Language).
Применяется Hibernate в корпоративных приложениях (Spring Framework), проектах с высокими требованиями к производительности и масштабируемости.
JPA - стандартный API для работы с ORM в Java. Hibernate является одной из реализаций JPA. Здесь используется унифицированный подход к работе с БД, и заметна простота использования благодаря аннотациям. Применяется в проектах, где важна совместимость между различными ORM.